using System;
using Sinacor.Infra.UI.Common;
using Sinacor.Infra.UI.Security.Services;
using System.Collections.Generic;
using Sinacor.Infra.Common;

namespace Sinacor.UI.Bovespa.ManutencaoOrdens.Communication.Translator.DataContractToModel
{
    /// <summary>
    /// Traduz um contrato de dados em um modelo
    /// </summary>
    public class Justificativa
    {
		public Justificativa(){}

		/// <summary>
        /// ToJustificativa
		/// </summary>
		/// <param name="from"></param>
		/// <returns></returns>
		public Model.Justificativa ToJustificativa(Communication.Bovespa.ManutencaoOrdens.Justificativa.JustificativaResponse from)
        {
            Model.Justificativa retorno = new Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Justificativa();

            if (from == null)
                return null;

            retorno.ApelidoCliente = from.ApelidoCliente;
            retorno.Ativo = from.Ativo;
            retorno.Codigo = from.Codigo;
            retorno.CodigoUsuario = from.CodigoUsuario;
            retorno.DataAlteracao = from.DataAlteracao;
            retorno.DataOrdem = from.DataOrdem;
            retorno.DataHoraOrdem = from.DataHoraOrdem;
            retorno.JustificativaOrdem = from.Justificativa;

            switch (from.NaturezaOperacao)
            {
                case Communication.Bovespa.ManutencaoOrdens.Justificativa.NaturezaOperacao.Compra:
                    retorno.NaturezaOperacao = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.NaturezaOperacao.Compra;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.Justificativa.NaturezaOperacao.Venda:
                    retorno.NaturezaOperacao = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.NaturezaOperacao.Venda;
                    break;
                case Communication.Bovespa.ManutencaoOrdens.Justificativa.NaturezaOperacao.CompraVenda:
                    retorno.NaturezaOperacao = Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Enum.NaturezaOperacao.CompraVenda;
                    break;
            }

            retorno.NumeroOrdem = from.NumeroOrdem;
            retorno.NumeroSubSequenciaOrdem = from.NumeroSubSequenciaOrdem;
            retorno.PendenteMensageria = from.PendenteMensageria;

            return retorno;
		}

		/// <summary>
		/// 
		/// </summary>
		/// <param name="from"></param>
		/// <returns></returns>
        public ModelCollection<Model.Justificativa> ToJustificativa(List<Communication.Bovespa.ManutencaoOrdens.Justificativa.JustificativaResponse> from)
        {
            ModelCollection<Model.Justificativa> lista = new ModelCollection<Sinacor.UI.Bovespa.ManutencaoOrdens.Model.Justificativa>();
            Model.Justificativa item = null;

            if (from == null)
                return null;

            foreach (Communication.Bovespa.ManutencaoOrdens.Justificativa.JustificativaResponse inLista in from)
            {
                item = this.ToJustificativa(inLista);
                lista.Add(item);
            }

            return lista;
		}

	}
}